home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 7_2009-2012.ISO / data / zips / Search_Lis2182646102010.psc / Search listview / Form1.frm next >
Text File  |  2010-06-10  |  12KB  |  425 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MsComCtl.ocx"
  3. Begin VB.Form Form1 
  4.    Caption         =   "Search Listview"
  5.    ClientHeight    =   6270
  6.    ClientLeft      =   60
  7.    ClientTop       =   450
  8.    ClientWidth     =   11700
  9.    LinkTopic       =   "Form1"
  10.    ScaleHeight     =   6270
  11.    ScaleWidth      =   11700
  12.    StartUpPosition =   3  'Windows Default
  13.    Begin VB.OptionButton Option1 
  14.       Caption         =   "None"
  15.       Height          =   255
  16.       Index           =   7
  17.       Left            =   10680
  18.       TabIndex        =   14
  19.       ToolTipText     =   "Restrict to column"
  20.       Top             =   5880
  21.       Value           =   -1  'True
  22.       Width           =   975
  23.    End
  24.    Begin VB.OptionButton Option1 
  25.       Caption         =   "Column 6"
  26.       Height          =   255
  27.       Index           =   6
  28.       Left            =   10680
  29.       TabIndex        =   13
  30.       ToolTipText     =   "Restrict to column"
  31.       Top             =   5640
  32.       Width           =   975
  33.    End
  34.    Begin VB.OptionButton Option1 
  35.       Caption         =   "Column 5"
  36.       Height          =   255
  37.       Index           =   5
  38.       Left            =   9600
  39.       TabIndex        =   12
  40.       ToolTipText     =   "Restrict to column"
  41.       Top             =   5880
  42.       Width           =   975
  43.    End
  44.    Begin VB.OptionButton Option1 
  45.       Caption         =   "Column 4"
  46.       Height          =   255
  47.       Index           =   4
  48.       Left            =   9600
  49.       TabIndex        =   11
  50.       ToolTipText     =   "Restrict to column"
  51.       Top             =   5640
  52.       Width           =   975
  53.    End
  54.    Begin VB.OptionButton Option1 
  55.       Caption         =   "Column 3"
  56.       Height          =   255
  57.       Index           =   3
  58.       Left            =   8520
  59.       TabIndex        =   10
  60.       ToolTipText     =   "Restrict to column"
  61.       Top             =   5880
  62.       Width           =   975
  63.    End
  64.    Begin VB.OptionButton Option1 
  65.       Caption         =   "Column 2"
  66.       Height          =   255
  67.       Index           =   2
  68.       Left            =   8520
  69.       TabIndex        =   9
  70.       ToolTipText     =   "Restrict to column"
  71.       Top             =   5640
  72.       Width           =   975
  73.    End
  74.    Begin VB.OptionButton Option1 
  75.       Caption         =   "Column 1"
  76.       Height          =   255
  77.       Index           =   1
  78.       Left            =   7440
  79.       TabIndex        =   8
  80.       ToolTipText     =   "Restrict to column"
  81.       Top             =   5880
  82.       Width           =   975
  83.    End
  84.    Begin VB.OptionButton Option1 
  85.       Caption         =   "Column 0"
  86.       Height          =   255
  87.       Index           =   0
  88.       Left            =   7440
  89.       TabIndex        =   7
  90.       ToolTipText     =   "Restrict to column"
  91.       Top             =   5640
  92.       Width           =   975
  93.    End
  94.    Begin VB.CheckBox Check2 
  95.       Caption         =   "Multi Selection"
  96.       Height          =   255
  97.       Left            =   3360
  98.       TabIndex        =   6
  99.       Top             =   6000
  100.       Width           =   1455
  101.    End
  102.    Begin VB.CheckBox Check1 
  103.       Caption         =   "Case Sensitive"
  104.       Height          =   255
  105.       Left            =   1680
  106.       TabIndex        =   5
  107.       Top             =   6000
  108.       Width           =   1575
  109.    End
  110.    Begin VB.CommandButton Command2 
  111.       Caption         =   "Search"
  112.       Height          =   255
  113.       Left            =   6240
  114.       TabIndex        =   3
  115.       Top             =   5640
  116.       Width           =   975
  117.    End
  118.    Begin VB.TextBox Text1 
  119.       Height          =   285
  120.       Left            =   1680
  121.       TabIndex        =   2
  122.       Text            =   "Text1"
  123.       Top             =   5640
  124.       Width           =   4455
  125.    End
  126.    Begin VB.CommandButton Command1 
  127.       Caption         =   "Fill Listview"
  128.       Height          =   255
  129.       Left            =   120
  130.       TabIndex        =   1
  131.       Top             =   5640
  132.       Width           =   1455
  133.    End
  134.    Begin MSComctlLib.ListView ListView1 
  135.       Height          =   5295
  136.       Left            =   0
  137.       TabIndex        =   0
  138.       Top             =   240
  139.       Width           =   11535
  140.       _ExtentX        =   20346
  141.       _ExtentY        =   9340
  142.       View            =   3
  143.       LabelWrap       =   -1  'True
  144.       HideSelection   =   0   'False
  145.       _Version        =   393217
  146.       ForeColor       =   -2147483640
  147.       BackColor       =   -2147483643
  148.       BorderStyle     =   1
  149.       Appearance      =   1
  150.       NumItems        =   7
  151.       BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  152.          Text            =   "Column 1"
  153.          Object.Width           =   2540
  154.       EndProperty
  155.       BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  156.          SubItemIndex    =   1
  157.          Text            =   "Column 2"
  158.          Object.Width           =   2540
  159.       EndProperty
  160.       BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  161.          SubItemIndex    =   2
  162.          Text            =   "Column 3"
  163.          Object.Width           =   2540
  164.       EndProperty
  165.       BeginProperty ColumnHeader(4) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  166.          SubItemIndex    =   3
  167.          Text            =   "Column 4"
  168.          Object.Width           =   2540
  169.       EndProperty
  170.       BeginProperty ColumnHeader(5) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  171.          SubItemIndex    =   4
  172.          Text            =   "Column 5"
  173.          Object.Width           =   2540
  174.       EndProperty
  175.       BeginProperty ColumnHeader(6) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  176.          SubItemIndex    =   5
  177.          Text            =   "Column 6"
  178.          Object.Width           =   2540
  179.       EndProperty
  180.       BeginProperty ColumnHeader(7) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  181.          SubItemIndex    =   6
  182.          Text            =   "Column 7"
  183.          Object.Width           =   2540
  184.       EndProperty
  185.    End
  186.    Begin VB.Label Label1 
  187.       AutoSize        =   -1  'True
  188.       Caption         =   "Found 0"
  189.       Height          =   195
  190.       Left            =   4920
  191.       TabIndex        =   4
  192.       Top             =   6000
  193.       Width           =   585
  194.    End
  195. End
  196. Attribute VB_Name = "Form1"
  197. Attribute VB_GlobalNameSpace = False
  198. Attribute VB_Creatable = False
  199. Attribute VB_PredeclaredId = True
  200. Attribute VB_Exposed = False
  201. Option Explicit
  202. Private lBegin As Long
  203. 'Search Listview with Subitems William W 2010
  204.  
  205.  
  206. Private Sub Command1_Click()
  207.  
  208.    'Load a bunch of random stuff into the listview
  209.   Dim LvItem As ListItem
  210.   Dim A As Long
  211.   Dim B As Long
  212.   Dim RandomText As String
  213.   Dim LastTimer As Single
  214.  
  215.    LastTimer = Timer
  216.  
  217.    Do Until Timer >= LastTimer + 5
  218.  
  219.       For A = 35 To 123
  220.          RandomText = Chr$(A) & Chr$(A) & Chr$(A) & Chr$(A) & Chr$(A) & Chr$(A)
  221.  
  222.          Set LvItem = ListView1.ListItems.Add(, , RandomText)
  223.  
  224.          For B = 1 To ListView1.ColumnHeaders.Count - 1
  225.  
  226.             If B = 6 Then
  227.                LvItem.SubItems(B) = Val(Round(Timer - LastTimer, 1))
  228.              Else
  229.                LvItem.SubItems(B) = "Sub Item " & B & " " & Chr$(A) & Chr$(A) & Chr$(A) & Chr$(B + _
  230.                   100)
  231.             End If
  232.  
  233.          Next
  234.       Next
  235.       DoEvents
  236.    Loop
  237.  
  238. End Sub
  239.  
  240. Private Sub Command2_Click()
  241.  
  242.   Dim A As Long
  243.   Dim RestrictedCol As Long
  244.  
  245.    For A = 0 To 7
  246.  
  247.       If Option1(A) = True Then
  248.          If A = 7 Then
  249.             RestrictedCol = -1
  250.           Else
  251.             RestrictedCol = A
  252.             Exit For
  253.          End If
  254.  
  255.       End If
  256.    Next A
  257.  
  258.    lBegin = lBegin + 1
  259.  
  260.    SearchListVw ListView1, Text1.Text, lBegin, Check1.Value, Check2.Value, RestrictedCol
  261.  
  262. End Sub
  263.  
  264. Private Sub InitSearchListVw(LV As ListView)
  265.  
  266.    'Fills the Tag property of the Main item with the data contained in each column/Subitem
  267.    On Error GoTo InitErr
  268.   Dim lItem As Long
  269.   Dim lSubitem As Long
  270.  
  271.    For lItem = 1 To LV.ListItems.Count
  272.       For lSubitem = 0 To LV.ColumnHeaders.Count - 1
  273.  
  274.          If lSubitem = 0 Then
  275.             'You could use LV.ListItems(a).listSubItems(1).tag also if you were already using the
  276.             'main item tags
  277.             LV.ListItems(lItem).Tag = LV.ListItems(lItem).Text
  278.             ' index 0 stands for the first column or the Main
  279.             ' item in the listview as there is no subitem 0 this will have to be
  280.             ' conditional
  281.           Else
  282.             'Item;Subitem1;Subitem2;Subitem3......
  283.             LV.ListItems(lItem).Tag = LV.ListItems(lItem).Tag & ";" & _
  284.                LV.ListItems(lItem).SubItems(lSubitem)
  285.  
  286.          End If
  287.       Next lSubitem
  288.  
  289.    Next lItem
  290.    'Delete the data in lv.tag to make it re-search or add or remove an item
  291.    '(Lv.tag="")
  292.    LV.Tag = "Loaded " & lItem
  293.    Debug.Print LV.Tag & " Items"
  294.  
  295. InitErr:
  296.  
  297.    Select Case Err.Number
  298.     Case 0:
  299.       'No Error
  300.     Case 91: 'Empty List
  301.     Case Else:
  302.       Debug.Print Err.Number; Err.Description
  303.  
  304.    End Select
  305.  
  306. End Sub
  307.  
  308. Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
  309.  
  310.    lBegin = Item.Index
  311.  
  312. End Sub
  313.  
  314. Private Sub SearchListVw(LV As ListView, _
  315.                          Stext As String, _
  316.                          Optional ByRef Start As Long = 1, _
  317.                          Optional CaseSens As Boolean = False, _
  318.                          Optional MultiSelect As Boolean = True, _
  319.                          Optional RestrictedColumn As Long = -1)
  320.  
  321.    'Search a Listview subitems included
  322.    On Error GoTo SearchErr
  323.   Dim lFound As Long
  324.   Dim lIndex As Long
  325.   Dim lItem As Long
  326.   Dim lPos As Long
  327.  
  328.    LV.MultiSelect = MultiSelect
  329.    LV.HideSelection = False 'Needed
  330.    LV.FullRowSelect = True 'optional....
  331.  
  332.    LV.ListItems(LV.SelectedItem.Index).Selected = False
  333.    lIndex = 0
  334.    If Start < 1 Then Start = 1
  335.  
  336.    'Here we prevent having to load the items and sub items in to the tag properties multiple times
  337.    '   unless there are more items added...
  338.    If InStr(1, LV.Tag, LV.ListItems.Count + 1) = 0 Then InitSearchListVw LV
  339.  
  340.    For lItem = Start To LV.ListItems.Count
  341.  
  342.       If CaseSens = True Then
  343.          'Search is case sensitive so no text formatting..
  344.          lPos = InStr(1, LV.ListItems(lItem).Tag, Stext)
  345.  
  346.          If RestrictedColumn <> -1 Then
  347.             If InStr(1, Split(LV.ListItems(lItem).Tag, ";")(RestrictedColumn), Stext) = 0 Then lPos _
  348.                = 0
  349.          End If
  350.  
  351.        Else
  352.          ' if its not to be case sensitive then make
  353.          '   everything uppercase
  354.          Stext = UCase$(Stext)
  355.          lPos = InStr(1, UCase$(LV.ListItems(lItem).Tag), Stext)
  356.  
  357.          If RestrictedColumn <> -1 Then
  358.             'Split the tag into an array check the desired colum for a match
  359.             If InStr(1, UCase$(Split(LV.ListItems(lItem).Tag, ";")(RestrictedColumn)), Stext) = 0 _
  360.                Then lPos = 0 'Not found..
  361.          End If
  362.  
  363.       End If
  364.  
  365.       If lPos <> 0 Then
  366.  
  367.          If lIndex = 0 Then lIndex = lItem 'If the first item hasnt been selected select it now
  368.  
  369.          lFound = lFound + 1
  370.          If MultiSelect = True Then LV.ListItems(lItem).Selected = True
  371.          'Select All Matches in the listview
  372.  
  373.        Else
  374.          'Not Found
  375.          LV.ListItems(lItem).Selected = False
  376.       End If
  377.  
  378.    Next
  379.  
  380.    If lIndex = 0 Then
  381.       Label1.Caption = "Not Found"
  382.       Start = 1
  383.     Else
  384.       Label1.Caption = "Found " & lFound
  385.       Start = lIndex
  386.       LV.ListItems(lIndex).Selected = True
  387.       LV.ListItems(lIndex).EnsureVisible
  388.    End If
  389.  
  390. SearchErr:
  391.  
  392.    Select Case Err.Number
  393.     Case 0:
  394.       'No Error
  395.     Case 91: 'Empty List
  396.     Case Else:
  397.       Debug.Print Err.Number; Err.Description
  398.  
  399.    End Select
  400.  
  401. End Sub
  402.  
  403. Private Sub Text1_Change()
  404. 'Checks for a match as you type
  405.   Dim A As Long
  406.   Dim RestrictedCol As Long
  407.  
  408.    For A = 0 To 7
  409.  
  410.       If Option1(A) = True Then
  411.          If A = 7 Then
  412.             RestrictedCol = -1
  413.           Else
  414.             RestrictedCol = A
  415.             Exit For
  416.          End If
  417.  
  418.       End If
  419.    Next A
  420.  
  421.    SearchListVw ListView1, Text1.Text, lBegin, Check1.Value, Check2.Value, RestrictedCol
  422.  
  423. End Sub
  424.  
  425.